package com.haixiaoke.saas.lock.service;

import com.alibaba.fastjson2.JSONObject;
import com.haixiaoke.saas.common.core.domain.AjaxResult;
import com.haixiaoke.saas.common.core.page.TableDataInfo;
import com.haixiaoke.saas.lock.domain.DeviceLock;

import java.util.Date;
import java.util.List;

/**
 * 设备锁Service接口
 * 
 * @author panda
 * @date 2025-06-26
 */
public interface IDeviceLockService {
    /**
     * 查询设备锁
     * 
     * @param lockId 设备锁主键
     * @return 设备锁
     */
    DeviceLock selectDeviceLockByLockId(Long lockId);

    /**
     * 获取锁型号列表
     */
    JSONObject modelList();

    /**
     * 查询设备锁列表
     * 
     * @param deviceLock 设备锁
     * @return 设备锁集合
     */
    List<DeviceLock> selectDeviceLockList(DeviceLock deviceLock);

    /**
     * 新增设备锁
     * 
     * @param deviceLock 设备锁
     * @return 结果
     */
    AjaxResult manageInsertDeviceLock(DeviceLock deviceLock);

    /**
     * 修改设备锁
     * 
     * @param deviceLock 设备锁
     * @return 结果
     */
    int updateDeviceLock(DeviceLock deviceLock);

    /**
     * 批量删除设备锁
     * 
     * @param lockIds 需要删除的设备锁主键集合
     * @return 结果
     */
     int deleteDeviceLockByLockIds(Long[] lockIds);

    /**
     * 删除设备锁信息
     * 
     * @param lockId 设备锁主键
     * @return 结果
     */
    AjaxResult deleteDeviceLockByLockId(Long lockId);

    /**
     * C端查询设备锁列表
     * @param deviceLock
     * @return
     */
    List<DeviceLock> flatSelectDeviceLockList(DeviceLock deviceLock);

    /**
     * 开锁记录
     *
     * @param lockId     锁主键
     * @param unlockTime 开锁时间
     * @param userName   用户名称
     * @param unlockType  锁类型
     * @param pageNum    页码
     * @param pageSize   页大小
     * @return 锁定记录
     */
    TableDataInfo unlockingRecord(Long lockId, Date unlockTime, String userName, Integer unlockType, Integer pageNum, Integer pageSize);

    List<String> selectDeviceLockMacList();
}
